﻿using System.Globalization;
using System.Data.Linq;
using System.Data.Linq.Mapping;
using System.Data;
using System.Collections.Generic;
using System.Reflection;
using System.Linq;
using System.Linq.Expressions;
using System.ComponentModel;
using System;


namespace PlanoAulaHelper.Reports
{

    
    public partial class Relatorios
    {
        partial class RelatorioPlanoAulaDataTable
        {
        }

        public static DataTable ObterRelatorioAvaliacao(int IdPlanoAulaCab)
        {
            using (dbContext db = new dbContext())
            {
                int qtdDetalhe = db.PlanoAulaDetalhes.Count(n => n.IdPlanoAulaCab == IdPlanoAulaCab);
                if ( qtdDetalhe == 0 )
                    return new DataTable();

                var resultado = (from pcab in db.PlanoAulaCabs
                                 join pdet in db.PlanoAulaDetalhes on pcab.Id equals pdet.IdPlanoAulaCab into joinPlanoAula
                                 join ava in db.Avaliacaos on pcab.Id equals ava.UnidadeAvaliacao.IdPlanoAulaCab into joinAvaliacoes
                                 where pcab.Id == IdPlanoAulaCab
                                 from jPlanoAula in joinPlanoAula.DefaultIfEmpty()
                                 from jAvaliacao in joinAvaliacoes.DefaultIfEmpty()
                                 select new
                                 {
                                     Unidade = jAvaliacao.UnidadeAvaliacao.Nome,
                                     IdPlanoAulaCab = (int?)jPlanoAula.IdPlanoAulaCab,
                                     IdPlanoAulaDetahle = (int?)jPlanoAula.Id,
                                     IdUnidadeAvaliacao = (int?)jAvaliacao.Id,
                                     NomeAvaliacao = jAvaliacao.Nome,
                                     jAvaliacao.DataMarcada,
                                     jAvaliacao.DataRealizacao,
                                     jAvaliacao.Assuntos,
                                     jAvaliacao.Observacao,
                                     jAvaliacao.Situacao,
                                     jAvaliacao.NotaMax,
                                     jPlanoAula.Conteudo,
                                     jPlanoAula.Referencia,
                                     Data = (DateTime?)jPlanoAula.Data,
                                     Dia = (int?)(((DayOfWeek?)jPlanoAula.Data.DayOfWeek).HasValue? (int?)jPlanoAula.Data.DayOfWeek : (int?) null),
                                     HoraInicio = (int?)jPlanoAula.HoraInicio,
                                     HoraFinal = (int?)jPlanoAula.HoraFinal,
                                     MinutoInicio = (int?)jPlanoAula.MinutoInicio,
                                     MinutoFinal = (int?)jPlanoAula.MinutoFinal
                                 });

                return resultado.ToADOTable();
            }
        }

        //public static DataTable ObterDadosRelatorioAvaliacao(int IdItem)
        //{
        //    var relatorio = (from r in new RelatoriosDataContext().RelatorioAvaliacaoDados
        //                     where r.IdPlanoAulaCab == IdItem
        //                     orderby r.DataMarcada ascending, r.NomeAvaliacao ascending
        //                     select r);
        //    return relatorio.ToADOTable(rec => new object[] { relatorio });
        //}
    }
}
